<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>SPHinXsys: SPH::ParticleGeneratorNetwork Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">SPHinXsys
   &#160;<span id="projectnumber">alpha version</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespace_s_p_h.html">SPH</a></li><li class="navelem"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html">ParticleGeneratorNetwork</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="class_s_p_h_1_1_particle_generator_network-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">SPH::ParticleGeneratorNetwork Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Generate a tree-shape network for the conduction system of a heart with particles.  
 <a href="class_s_p_h_1_1_particle_generator_network.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="particle__generator__network_8h_source.html">particle_generator_network.h</a>&gt;</code></p>

<p>Inherits <a class="el" href="class_s_p_h_1_1_particle_generator.html">SPH::ParticleGenerator</a>.</p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a11f78aa5a45d06d0f610da7920f5ff40"><td class="memItemLeft" align="right" valign="top"><a id="a11f78aa5a45d06d0f610da7920f5ff40"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>ParticleGeneratorNetwork</b> (<a class="el" href="class_s_p_h_1_1_s_p_h_body.html">SPHBody</a> &amp;sph_body, const Vecd &amp;starting_pnt, const Vecd &amp;second_pnt, int iterator, Real grad_factor)</td></tr>
<tr class="separator:a11f78aa5a45d06d0f610da7920f5ff40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adec5541193d38f6dd71cc056494c1d1c"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html#adec5541193d38f6dd71cc056494c1d1c">initializeGeometricVariables</a> () override</td></tr>
<tr class="separator:adec5541193d38f6dd71cc056494c1d1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_s_p_h_1_1_particle_generator"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_s_p_h_1_1_particle_generator')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_s_p_h_1_1_particle_generator.html">SPH::ParticleGenerator</a></td></tr>
<tr class="memitem:a0ca2e660044ac5489a0c0273cd2acc3b inherit pub_methods_class_s_p_h_1_1_particle_generator"><td class="memItemLeft" align="right" valign="top"><a id="a0ca2e660044ac5489a0c0273cd2acc3b"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>ParticleGenerator</b> (<a class="el" href="class_s_p_h_1_1_s_p_h_body.html">SPHBody</a> &amp;sph_body)</td></tr>
<tr class="separator:a0ca2e660044ac5489a0c0273cd2acc3b inherit pub_methods_class_s_p_h_1_1_particle_generator"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_s_p_h_1_1_base_particle_generator"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_s_p_h_1_1_base_particle_generator')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_s_p_h_1_1_base_particle_generator.html">SPH::BaseParticleGenerator</a></td></tr>
<tr class="memitem:ab50b7b249c6cbac9eaa4c99b4113f854 inherit pub_methods_class_s_p_h_1_1_base_particle_generator"><td class="memItemLeft" align="right" valign="top"><a id="ab50b7b249c6cbac9eaa4c99b4113f854"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>BaseParticleGenerator</b> (<a class="el" href="class_s_p_h_1_1_s_p_h_body.html">SPHBody</a> &amp;sph_body)</td></tr>
<tr class="separator:ab50b7b249c6cbac9eaa4c99b4113f854 inherit pub_methods_class_s_p_h_1_1_base_particle_generator"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a867b210913499ae95bb6794c4d85890a"><td class="memItemLeft" align="right" valign="top">Vecd&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html#a867b210913499ae95bb6794c4d85890a">getGradientFromNearestPoints</a> (Vecd pt, Real delta)</td></tr>
<tr class="memdesc:a867b210913499ae95bb6794c4d85890a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the gradient from nearest points, for imposing repulsive force.  <a href="#a867b210913499ae95bb6794c4d85890a">More...</a><br /></td></tr>
<tr class="separator:a867b210913499ae95bb6794c4d85890a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb8b481f1e7e58d48c9f7ff9daaf55ae"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html#aeb8b481f1e7e58d48c9f7ff9daaf55ae">createABranchIfValid</a> (<a class="el" href="classsize__t.html">size_t</a> parent_id, Real angle, Real repulsivity, <a class="el" href="classsize__t.html">size_t</a> number_segments)</td></tr>
<tr class="memdesc:aeb8b481f1e7e58d48c9f7ff9daaf55ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new branch if it is valid.  <a href="#aeb8b481f1e7e58d48c9f7ff9daaf55ae">More...</a><br /></td></tr>
<tr class="separator:aeb8b481f1e7e58d48c9f7ff9daaf55ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28429046c1c6e7d74e4a44fdf1ff8fb0"><td class="memItemLeft" align="right" valign="top">Vecd&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html#a28429046c1c6e7d74e4a44fdf1ff8fb0">createATentativeNewBranchPoint</a> (Vecd init_point, Vecd dir)</td></tr>
<tr class="memdesc:a28429046c1c6e7d74e4a44fdf1ff8fb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions that creates a new node in the mesh surface and it to the queue is it lies in the surface.  <a href="#a28429046c1c6e7d74e4a44fdf1ff8fb0">More...</a><br /></td></tr>
<tr class="separator:a28429046c1c6e7d74e4a44fdf1ff8fb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed64feca3c15abe78c8f5017aa79e3a8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html#aed64feca3c15abe78c8f5017aa79e3a8">isCollision</a> (const Vecd &amp;new_point, const <a class="el" href="namespace_s_p_h.html#a7fbc15167459a37683f40cb4a5aa0f06">ListData</a> &amp;nearest_neighbor, <a class="el" href="classsize__t.html">size_t</a> parent_id)</td></tr>
<tr class="memdesc:aed64feca3c15abe78c8f5017aa79e3a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if the new point has collision with the existing points.  <a href="#aed64feca3c15abe78c8f5017aa79e3a8">More...</a><br /></td></tr>
<tr class="separator:aed64feca3c15abe78c8f5017aa79e3a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa19a29e391dcb4eef64a55585c43bcfc"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html#aa19a29e391dcb4eef64a55585c43bcfc">extraCheck</a> (const Vecd &amp;new_point)</td></tr>
<tr class="memdesc:aa19a29e391dcb4eef64a55585c43bcfc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if the new point is valid according to extra constraint.  <a href="#aa19a29e391dcb4eef64a55585c43bcfc">More...</a><br /></td></tr>
<tr class="separator:aa19a29e391dcb4eef64a55585c43bcfc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4969b4e9a3f4a22844782584eeeba10"><td class="memItemLeft" align="right" valign="top"><a id="ab4969b4e9a3f4a22844782584eeeba10"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>growAParticleOnBranch</b> (<a class="el" href="class_s_p_h_1_1_tree_body_1_1_branch.html">TreeBody::Branch</a> *branch, const Vecd &amp;new_point, const Vecd &amp;end_direction)</td></tr>
<tr class="separator:ab4969b4e9a3f4a22844782584eeeba10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_class_s_p_h_1_1_particle_generator"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_class_s_p_h_1_1_particle_generator')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="class_s_p_h_1_1_particle_generator.html">SPH::ParticleGenerator</a></td></tr>
<tr class="memitem:a5188b165a5d0daed78e0348907955765 inherit pro_methods_class_s_p_h_1_1_particle_generator"><td class="memItemLeft" align="right" valign="top"><a id="a5188b165a5d0daed78e0348907955765"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>initializePositionAndVolumetricMeasure</b> (const Vecd &amp;position, Real volumetric_measure)</td></tr>
<tr class="separator:a5188b165a5d0daed78e0348907955765 inherit pro_methods_class_s_p_h_1_1_particle_generator"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_class_s_p_h_1_1_base_particle_generator"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_class_s_p_h_1_1_base_particle_generator')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="class_s_p_h_1_1_base_particle_generator.html">SPH::BaseParticleGenerator</a></td></tr>
<tr class="memitem:a316aa1588ee0c05ae4883d121447fa66 inherit pro_methods_class_s_p_h_1_1_base_particle_generator"><td class="memItemLeft" align="right" valign="top"><a id="a316aa1588ee0c05ae4883d121447fa66"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>initializePosition</b> (const Vecd &amp;position)</td></tr>
<tr class="separator:a316aa1588ee0c05ae4883d121447fa66 inherit pro_methods_class_s_p_h_1_1_base_particle_generator"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a2baf4f916c54a4015e52084cd7b864c6"><td class="memItemLeft" align="right" valign="top">Vecd&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html#a2baf4f916c54a4015e52084cd7b864c6">starting_pnt_</a></td></tr>
<tr class="separator:a2baf4f916c54a4015e52084cd7b864c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03ee576607b45f554338b90a415388d3"><td class="memItemLeft" align="right" valign="top">Vecd&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html#a03ee576607b45f554338b90a415388d3">second_pnt_</a></td></tr>
<tr class="separator:a03ee576607b45f554338b90a415388d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a949b00f7ef44cedd0bdc80e36a36a5b8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsize__t.html">size_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html#a949b00f7ef44cedd0bdc80e36a36a5b8">n_it_</a></td></tr>
<tr class="separator:a949b00f7ef44cedd0bdc80e36a36a5b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ff936b6fe133c56416238ee4c131488"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html#a9ff936b6fe133c56416238ee4c131488">fascicles_</a></td></tr>
<tr class="separator:a9ff936b6fe133c56416238ee4c131488"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae13adb2427da03baf83c862af482eb01"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsize__t.html">size_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html#ae13adb2427da03baf83c862af482eb01">segments_in_branch_</a></td></tr>
<tr class="separator:ae13adb2427da03baf83c862af482eb01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30d32321b47f8e9e0a541e12134ead95"><td class="memItemLeft" align="right" valign="top">Real&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html#a30d32321b47f8e9e0a541e12134ead95">segment_length_</a></td></tr>
<tr class="separator:a30d32321b47f8e9e0a541e12134ead95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a199b14ba9b67bef02dd5318215f7561a"><td class="memItemLeft" align="right" valign="top">Real&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html#a199b14ba9b67bef02dd5318215f7561a">angle_</a> = 0.3</td></tr>
<tr class="separator:a199b14ba9b67bef02dd5318215f7561a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afdf4f9d726d687716ecae8649cb9d263"><td class="memItemLeft" align="right" valign="top">Real&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html#afdf4f9d726d687716ecae8649cb9d263">repulsivity_</a> = 0.175</td></tr>
<tr class="separator:afdf4f9d726d687716ecae8649cb9d263"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6b78ff20f9e439a64ec72b24dd8860f"><td class="memItemLeft" align="right" valign="top">Real&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html#aa6b78ff20f9e439a64ec72b24dd8860f">grad_factor_</a></td></tr>
<tr class="separator:aa6b78ff20f9e439a64ec72b24dd8860f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa04b0a56e1a0a88c6f5564558cfdbd88"><td class="memItemLeft" align="right" valign="top">std::vector&lt; Real &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html#aa04b0a56e1a0a88c6f5564558cfdbd88">fascicle_angles_</a> = {-1.25, 0.75}</td></tr>
<tr class="separator:aa04b0a56e1a0a88c6f5564558cfdbd88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adccfb8168e90b99a196bb1f00389b258"><td class="memItemLeft" align="right" valign="top">Real&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator_network.html#adccfb8168e90b99a196bb1f00389b258">fascicle_ratio_</a> = 15.0</td></tr>
<tr class="separator:adccfb8168e90b99a196bb1f00389b258"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeadfa1b09c7c03526c7028e3b936fd10"><td class="memItemLeft" align="right" valign="top"><a id="aeadfa1b09c7c03526c7028e3b936fd10"></a>
<a class="el" href="class_s_p_h_1_1_s_p_h_body.html">SPHBody</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>sph_body_</b></td></tr>
<tr class="separator:aeadfa1b09c7c03526c7028e3b936fd10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5884fddcb30d94216daae6f292e97a6"><td class="memItemLeft" align="right" valign="top"><a id="aa5884fddcb30d94216daae6f292e97a6"></a>
<a class="el" href="class_s_p_h_1_1_shape.html">Shape</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>body_shape_</b></td></tr>
<tr class="separator:aa5884fddcb30d94216daae6f292e97a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a406a6e70b44c68ba06e7f55bc5c378ae"><td class="memItemLeft" align="right" valign="top"><a id="a406a6e70b44c68ba06e7f55bc5c378ae"></a>
<a class="el" href="class_s_p_h_1_1_base_cell_linked_list.html">BaseCellLinkedList</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>cell_linked_list_</b></td></tr>
<tr class="separator:a406a6e70b44c68ba06e7f55bc5c378ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1c8bef1310e8c217f0fbb5b244dd975"><td class="memItemLeft" align="right" valign="top"><a id="aa1c8bef1310e8c217f0fbb5b244dd975"></a>
<a class="el" href="class_s_p_h_1_1_tree_body.html">TreeBody</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>tree_</b></td></tr>
<tr class="separator:aa1c8bef1310e8c217f0fbb5b244dd975"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_class_s_p_h_1_1_particle_generator"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_class_s_p_h_1_1_particle_generator')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="class_s_p_h_1_1_particle_generator.html">SPH::ParticleGenerator</a></td></tr>
<tr class="memitem:a548de961f4d4fa23bca7fda34fb20ef8 inherit pro_attribs_class_s_p_h_1_1_particle_generator"><td class="memItemLeft" align="right" valign="top">StdLargeVec&lt; Real &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_particle_generator.html#a548de961f4d4fa23bca7fda34fb20ef8">Vol_</a></td></tr>
<tr class="separator:a548de961f4d4fa23bca7fda34fb20ef8 inherit pro_attribs_class_s_p_h_1_1_particle_generator"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_class_s_p_h_1_1_base_particle_generator"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_class_s_p_h_1_1_base_particle_generator')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="class_s_p_h_1_1_base_particle_generator.html">SPH::BaseParticleGenerator</a></td></tr>
<tr class="memitem:a44a78d659d03cfa2d69c74c7829317ee inherit pro_attribs_class_s_p_h_1_1_base_particle_generator"><td class="memItemLeft" align="right" valign="top"><a id="a44a78d659d03cfa2d69c74c7829317ee"></a>
<a class="el" href="class_s_p_h_1_1_base_particles.html">BaseParticles</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>base_particles_</b></td></tr>
<tr class="separator:a44a78d659d03cfa2d69c74c7829317ee inherit pro_attribs_class_s_p_h_1_1_base_particle_generator"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2c0294fe0f909b183f149a29a5e0f55 inherit pro_attribs_class_s_p_h_1_1_base_particle_generator"><td class="memItemLeft" align="right" valign="top">StdLargeVec&lt; Vecd &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_base_particle_generator.html#aa2c0294fe0f909b183f149a29a5e0f55">pos_</a></td></tr>
<tr class="separator:aa2c0294fe0f909b183f149a29a5e0f55 inherit pro_attribs_class_s_p_h_1_1_base_particle_generator"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab06e153830961518508b913ba6915d8a inherit pro_attribs_class_s_p_h_1_1_base_particle_generator"><td class="memItemLeft" align="right" valign="top">StdLargeVec&lt; <a class="el" href="classsize__t.html">size_t</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_base_particle_generator.html#ab06e153830961518508b913ba6915d8a">unsorted_id_</a></td></tr>
<tr class="separator:ab06e153830961518508b913ba6915d8a inherit pro_attribs_class_s_p_h_1_1_base_particle_generator"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Generate a tree-shape network for the conduction system of a heart with particles. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="aeb8b481f1e7e58d48c9f7ff9daaf55ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeb8b481f1e7e58d48c9f7ff9daaf55ae">&#9670;&nbsp;</a></span>createABranchIfValid()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classbool.html">bool</a> SPH::ParticleGeneratorNetwork::createABranchIfValid </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classsize__t.html">size_t</a>&#160;</td>
          <td class="paramname"><em>parent_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Real&#160;</td>
          <td class="paramname"><em>angle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Real&#160;</td>
          <td class="paramname"><em>repulsivity</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classsize__t.html">size_t</a>&#160;</td>
          <td class="paramname"><em>number_segments</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Create a new branch if it is valid. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">sph_body(SPHBody)</td><td>The <a class="el" href="class_s_p_h_1_1_s_p_h_body.html" title="SPHBody is a base body with basic data and functions. Its derived class can be a real fluid body...">SPHBody</a> to whom the tree belongs. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">parent_id(size_t)</td><td>Id of parent branch. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">angle(Real)</td><td>The angle for growing new points. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">repulsivity(Real)</td><td>The repulsivity for creating new points. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">number_segments(size_t)</td><td>Number of segments in this branch. </td></tr>
  </table>
  </dd>
</dl>
<p>Project grad to surface. <br />
 This constraint imposed to avoid too small time step size. </p>

</div>
</div>
<a id="a28429046c1c6e7d74e4a44fdf1ff8fb0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28429046c1c6e7d74e4a44fdf1ff8fb0">&#9670;&nbsp;</a></span>createATentativeNewBranchPoint()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Vecd SPH::ParticleGeneratorNetwork::createATentativeNewBranchPoint </td>
          <td>(</td>
          <td class="paramtype">Vecd&#160;</td>
          <td class="paramname"><em>init_point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Vecd&#160;</td>
          <td class="paramname"><em>dir</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Functions that creates a new node in the mesh surface and it to the queue is it lies in the surface. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">init_node</td><td>vector that contains the coordinates of the last node added in the branch. vector that contains the coordinates of the last node added in the branch. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dir</td><td>a vector that contains the direction from the init_node to the node to project. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">end</td><td>point of the created segment. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="aa19a29e391dcb4eef64a55585c43bcfc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa19a29e391dcb4eef64a55585c43bcfc">&#9670;&nbsp;</a></span>extraCheck()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classbool.html">bool</a> SPH::ParticleGeneratorNetwork::extraCheck </td>
          <td>(</td>
          <td class="paramtype">const Vecd &amp;&#160;</td>
          <td class="paramname"><em>new_point</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Check if the new point is valid according to extra constraint. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">new_point(Vecd)</td><td>The enquiry point. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a867b210913499ae95bb6794c4d85890a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a867b210913499ae95bb6794c4d85890a">&#9670;&nbsp;</a></span>getGradientFromNearestPoints()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Vecd SPH::ParticleGeneratorNetwork::getGradientFromNearestPoints </td>
          <td>(</td>
          <td class="paramtype">Vecd&#160;</td>
          <td class="paramname"><em>pt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Real&#160;</td>
          <td class="paramname"><em>delta</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the gradient from nearest points, for imposing repulsive force. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pt(Vecd)</td><td>Inquiry point. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">delta(Real)</td><td>parameter for gradient calculation. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="adec5541193d38f6dd71cc056494c1d1c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adec5541193d38f6dd71cc056494c1d1c">&#9670;&nbsp;</a></span>initializeGeometricVariables()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void SPH::ParticleGeneratorNetwork::initializeGeometricVariables </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Created base particles based on edges in branch </p>
<p>Set vertices in family branch. <br />
<br />
 Creating a new branch. <br />
 Creating a new branch with fixed number of segments. </p>

<p>Implements <a class="el" href="class_s_p_h_1_1_base_particle_generator.html">SPH::BaseParticleGenerator</a>.</p>

</div>
</div>
<a id="aed64feca3c15abe78c8f5017aa79e3a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed64feca3c15abe78c8f5017aa79e3a8">&#9670;&nbsp;</a></span>isCollision()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classbool.html">bool</a> SPH::ParticleGeneratorNetwork::isCollision </td>
          <td>(</td>
          <td class="paramtype">const Vecd &amp;&#160;</td>
          <td class="paramname"><em>new_point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespace_s_p_h.html#a7fbc15167459a37683f40cb4a5aa0f06">ListData</a> &amp;&#160;</td>
          <td class="paramname"><em>nearest_neighbor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classsize__t.html">size_t</a>&#160;</td>
          <td class="paramname"><em>parent_id</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Check if the new point has collision with the existing points. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">new_point(Vecd)</td><td>The enquiry point. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">nearest_neighbor(ListData)</td><td>The nearest point of the existing points. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">parent_id(size_t)</td><td>Id of parent branch </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a199b14ba9b67bef02dd5318215f7561a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a199b14ba9b67bef02dd5318215f7561a">&#9670;&nbsp;</a></span>angle_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Real SPH::ParticleGeneratorNetwork::angle_ = 0.3</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>angle with respect to the direction of the previous edge and the new edge. </p>

</div>
</div>
<a id="aa04b0a56e1a0a88c6f5564558cfdbd88"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa04b0a56e1a0a88c6f5564558cfdbd88">&#9670;&nbsp;</a></span>fascicle_angles_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;Real&gt; SPH::ParticleGeneratorNetwork::fascicle_angles_ = {-1.25, 0.75}</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>angles with respect to the initial edge of the fascicles. </p>

</div>
</div>
<a id="adccfb8168e90b99a196bb1f00389b258"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adccfb8168e90b99a196bb1f00389b258">&#9670;&nbsp;</a></span>fascicle_ratio_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Real SPH::ParticleGeneratorNetwork::fascicle_ratio_ = 15.0</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>ratio of length of the fascicles. Include one per fascicle to include. </p>

</div>
</div>
<a id="a9ff936b6fe133c56416238ee4c131488"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9ff936b6fe133c56416238ee4c131488">&#9670;&nbsp;</a></span>fascicles_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classbool.html">bool</a> SPH::ParticleGeneratorNetwork::fascicles_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Create fascicles? </p>

</div>
</div>
<a id="aa6b78ff20f9e439a64ec72b24dd8860f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6b78ff20f9e439a64ec72b24dd8860f">&#9670;&nbsp;</a></span>grad_factor_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Real SPH::ParticleGeneratorNetwork::grad_factor_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Factor for computing gradient from nearest node. </p>

</div>
</div>
<a id="a949b00f7ef44cedd0bdc80e36a36a5b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a949b00f7ef44cedd0bdc80e36a36a5b8">&#9670;&nbsp;</a></span>n_it_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classsize__t.html">size_t</a> SPH::ParticleGeneratorNetwork::n_it_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Number of iterations (generations of branch. </p>

</div>
</div>
<a id="afdf4f9d726d687716ecae8649cb9d263"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afdf4f9d726d687716ecae8649cb9d263">&#9670;&nbsp;</a></span>repulsivity_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Real SPH::ParticleGeneratorNetwork::repulsivity_ = 0.175</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>repulsivity parameter. </p>

</div>
</div>
<a id="a03ee576607b45f554338b90a415388d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a03ee576607b45f554338b90a415388d3">&#9670;&nbsp;</a></span>second_pnt_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Vecd SPH::ParticleGeneratorNetwork::second_pnt_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Second point, approximate the growing direction. </p>

</div>
</div>
<a id="a30d32321b47f8e9e0a541e12134ead95"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a30d32321b47f8e9e0a541e12134ead95">&#9670;&nbsp;</a></span>segment_length_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Real SPH::ParticleGeneratorNetwork::segment_length_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>segment length of the branch. </p>

</div>
</div>
<a id="ae13adb2427da03baf83c862af482eb01"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae13adb2427da03baf83c862af482eb01">&#9670;&nbsp;</a></span>segments_in_branch_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classsize__t.html">size_t</a> SPH::ParticleGeneratorNetwork::segments_in_branch_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>approximated number of segments in a branch. </p>

</div>
</div>
<a id="a2baf4f916c54a4015e52084cd7b864c6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2baf4f916c54a4015e52084cd7b864c6">&#9670;&nbsp;</a></span>starting_pnt_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Vecd SPH::ParticleGeneratorNetwork::starting_pnt_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Starting point for net work. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>SPHINXsys/src/for_3D_build/particle_generator/<a class="el" href="particle__generator__network_8h_source.html">particle_generator_network.h</a></li>
<li>SPHINXsys/src/for_3D_build/particle_generator/<a class="el" href="particle__generator__network_8cpp.html">particle_generator_network.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>
